home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / inet / internet-drafts / draft-ietf-tnfs-spec-03.txt < prev    next >
Text File  |  1993-03-03  |  63KB  |  1,845 lines

  1.  
  2.  
  3.                     A Specification of
  4.           Trusted NFS (TNFS) Protocol Extensions
  5.  
  6.  
  7.  
  8. 1.  Status Of This Memo
  9.  
  10. This document is an Internet  Draft.   Internet  Drafts  are
  11. working  documents  of  the  Internet Engineering Task Force
  12. (IETF), its Areas, and its Working Groups. Note  that  other
  13. groups  may  also  distribute  working documents as Internet
  14. Drafts.
  15.  
  16. Internet Drafts are draft documents valid for a  maximum  of
  17. six  months. Internet  Drafts  may  be updated, replaced, or
  18. obsoleted by  other  documents  at  any  time.   It  is  not
  19. appropriate  to use Internet Drafts as reference material or
  20. to cite them other than as a ''working draft'' or ''work  in
  21. progress''.
  22.  
  23. Please check the I-D  abstract  listing  contained  in  each
  24. Internet Draft directory to learn the current status of this
  25. or any other Internet Draft.
  26.  
  27. This draft document specifies extensions  to  RFC  1094  [1]
  28. which  support  network  file  access in a multilevel secure
  29. (MLS) network environment[1].  This draft  was  approved  by
  30. the  Trusted  Systems  Interoperability  Group (TSIG), whose
  31. charter is to promote multi-vendor trusted system interoper-
  32. ability.
  33.  
  34. 2.  Abstract
  35.  
  36. Additional functionality has been developed for  UNIXr  sys-
  37. tems  to address the TCSEC [2] requirements for trusted sys-
  38. tems.  New  requirements  are  driving  efforts  to  develop
  39. interoperable, networked solutions for trusted UNIX environ-
  40. ments.   A  specific  approach  for  addressing  TCSEC   MLS
  41. requirements  is identified in the CMW requirements document
  42. [3].  Developing support for network interoperability  among
  43. MLS classified systems is a primary goal of the trusted UNIX
  44. community.
  45.  
  46. Sun Microsystem's Network File System (NFS- ) V2 protocol is
  47. an   industry   (de  facto)  standard  network  file  access
  48. _________________________
  49.  
  50.   [1] Multilevel Secure systems include,  for  example,
  51. support for B1 (and above) and CMW security policies.
  52.   r UNIX is a registered trademark of UNIX Systems  La-
  53. boratories (U.S.L.)
  54.  
  55.   - NFS is a trademark of Sun Microsystems, Incorporat-
  56. ed
  57.  
  58.  
  59.  
  60. TNFS-001.2.05        Expires: 08/31/93              [Page 1]
  61.  
  62.  
  63.  
  64.  
  65.  
  66. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  67.  
  68.  
  69. mechanism, and represents one of the key components of  sys-
  70. tem  interoperability in the current UNIX networking market.
  71. This draft document describes extensions to the NFS V2  pro-
  72. tocol  which  support  network  file access in a MLS network
  73. environment.  It will be submitted to the RFC  editor  as  a
  74. protocol  specification. Distribution of this draft document
  75. is unlimited.  Please send comments to  the  author  at  the
  76. address identified in section 7 below.
  77.  
  78. 3.  MLS Extensions for NFS
  79.  
  80. MLS  functionality  includes  discretionary  access  control
  81. (DAC),  subject  and  object  security  labeling,  mandatory
  82. access control (MAC), authentication, auditing, and documen-
  83. tation.  Exchanging information between MLS systems requires
  84. communicating additional security information along with the
  85. actual data.
  86.  
  87. The primary goal of this specification is to describe exten-
  88. sions  to  the  NFS  V2  protocol which support network file
  89. access between MLS systems with  a  minimal  impact  on  the
  90. existing NFS V2 environment[2].  It is  also  intended  that
  91. this  MLS environment will permit unmodified NFS clients and
  92. servers to continue to be fully supported.
  93.  
  94. The general approach used in extending the NFS  V2  protocol
  95. is  to  transport  additional user context in the form of an
  96. extended NFS UNIX style credential  between  a  Trusted  NFS
  97. (TNFS)  client  and server, and to map that context into the
  98. appropriate server  security  policies  which  address  file
  99. access.   In addition, security file attributes are returned
  100. with each NFS (TNFS) procedure call.  Otherwise, the NFS  V2
  101. protocol remains essentially unchanged.
  102.  
  103. Two companion documents [4][5] complete the set of  documen-
  104. tation describing the TNFS environment.
  105.  
  106. 3.1.  The Extended User Context
  107.  
  108. The Sun RPC  protocol  [6][7]  includes  two  authentication
  109. parameters in a request message:
  110.  
  111.      an authentication credential  -  used  to  identify  or
  112.      present  a  client  subject's  credentials  to a server
  113.      along with a given request for access  or  information,
  114.      and
  115.  
  116.  
  117. _________________________
  118.   [2] Revisions to the NFS V2 protocol have been speci-
  119. fied  and  presented  for comment to the NFS community;
  120. this document addresses extensions to the  V2  protocol
  121. only.
  122.  
  123.  
  124.  
  125.  
  126. TNFS-001.2.05        Expires: 08/31/93              [Page 2]
  127.  
  128.  
  129.  
  130.  
  131.  
  132. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  133.  
  134.  
  135.      an authentication  verifier  -  used  to  validate  the
  136.      subject's credentials,
  137.  
  138. and an authentication verifier in the RPC response message.
  139.  
  140. An NFS server uses the client subject's credentials to  per-
  141. form  appropriate  access  checks  prior  to  servicing  the
  142. request.  The verifier parameter in the RPC request  message
  143. is used to authenticate the client subject's credentials[3].
  144.  
  145. Several styles of authentication are currently  defined  for
  146. NFS[4], and an NFS server  may  elect  to  support  multiple
  147. authentication  styles  concurrently.  A new RPC authentica-
  148. tion style,  AUTH_MLS,  is  defined  for  use  in  the  TNFS
  149. environment.  The definition of the AUTH_MLS credential com-
  150. bines the  information  in  the  AUTH_UNIX  credential  with
  151. extensions for the additional security attributes:
  152.  
  153.      o    audit id - immutable  subject  (user)  identifier,
  154.           not  affected  by modifications to either the real
  155.           or effective user or group identifiers,
  156.  
  157.      o    sensitivity label - used with a MAC policy; a sub-
  158.           ject  generally has a static, top-level clearance,
  159.           but is permitted to execute processes at a  sensi-
  160.           tivity  level  different  from  (i.e.  lower than)
  161.           his/her actual clearance,
  162.  
  163.      o    information label - used with  a  CMW  dual  level
  164.           labeling  policy;  dynamically adjusted based upon
  165.           the information content associated with  the  sub-
  166.           ject (or object),
  167.  
  168.      o    integrity label -  used  with  commercial,  multi-
  169.           party  security  policy  (e.g.,  Clark-Wilson [8],
  170.           Biba [9]),
  171.  
  172.      o    privilege  mask  -  used  to  identify  privileges
  173.           (e.g.,  chown,  chmod)  or ''rights'' granted to a
  174.           given subject, generally to override  an  existing
  175.           security policy,
  176.  
  177.      o    vendor label -  used  to  accommodate  additional,
  178.           vendor specific policies,
  179.  
  180.      o    subject  clearance  -  used  to  support  the  CMW
  181.           requirement  that a subject cannot write above the
  182. _________________________
  183.  
  184.   [3] Authentication of client  and  server  identities
  185. will not be addressed in this specification.
  186.   [4] Styles    currently    defined   are   AUTH_NONE,
  187. AUTH_UNIX, AUTH_SHORT, and AUTH_DES.
  188.  
  189.  
  190.  
  191.  
  192. TNFS-001.2.05        Expires: 08/31/93              [Page 3]
  193.  
  194.  
  195.  
  196.  
  197.  
  198. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  199.  
  200.  
  201.           clearance, and
  202.  
  203.      o    audit information  -  used  to  convey  additional
  204.           audit information, such as:
  205.  
  206.           -    audit preselection information including  the
  207.                audit  event  type,  the  subject  and object
  208.                identity, and the subject and  object  sensi-
  209.                tivity label, and
  210.  
  211.           -    additional  subject  information  such  as  a
  212.                subject's terminal or process identifier.
  213.  
  214. The  additional  security  attributes   will   actually   be
  215. represented  within  the  AUTH_MLS  credential by fixed size
  216. tokens,  which  can  support  multiple  translation  schemes
  217. through the use of an appropriate translation mechanism [5].
  218. For instance, mechanisms such  as  M.I.T.  Project  Athena's
  219. Hesiod/BIND or Sun Microsystem's NIS[5] lookup service could
  220. be  used  to  support the translation of tokens and security
  221. attribute information.
  222.  
  223. There are several advantages to the use of a token  transla-
  224. tion model.  One major advantage is that the actual security
  225. attribute information may be defined within the  translation
  226. service,  while  the attribute representation may be defined
  227. by a small, fixed sized token within  the  relatively  small
  228. amount  of unallocated space in the credential structure.  A
  229. second advantage of a  translation  model  is  that  it  may
  230. accommodate  multiple  security  policies  and translations.
  231. Finally, a token translation model permits security policies
  232. to  be  developed independently from the translation mechan-
  233. ism. Tokens are transferred within the  AUTH_MLS  credential
  234. as  opaque  objects  which are given context by the security
  235. policy  mechanisms  implemented  by  the  TNFS  clients  and
  236. servers.
  237.  
  238. Note that although tokens are  defined  as  opaque  objects,
  239. tokens which represent the same security attribute and which
  240. reside within the same translation scheme  may  be  compared
  241. for equality.  This characteristic permits tokens represent-
  242. ing a specific security attribute to be referenced  in  com-
  243. parisons without requiring the tokens to be translated.
  244.  
  245. 3.2.  Discretionary Access Control
  246.  
  247. A Discretionary Access Control (DAC) policy provides for the
  248. restriction  of subject access to objects based on the iden-
  249. tity of subjects  and/or  the  groups  for  which  they  are
  250. members.   Most  secure  systems  address  DAC  requirements
  251. _________________________
  252.  
  253.   [5] Network Information Service, known previously  as
  254. the Yellow Pages Service
  255.  
  256.  
  257.  
  258. TNFS-001.2.05        Expires: 08/31/93              [Page 4]
  259.  
  260.  
  261.  
  262.  
  263.  
  264. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  265.  
  266.  
  267. through the use of access control  lists.   Associated  with
  268. each  file  is  a  list which identifies the set of user and
  269. group combinations authorized to access the file, along with
  270. the access privileges associated with each combination.
  271.  
  272. The information contained in the AUTH_MLS  credential  of  a
  273. TNFS  client  request includes user and group identification
  274. sufficient to permit the server  to  apply  appropriate  DAC
  275. policies  in  controlling  access  to its shared, local file
  276. objects.  For example, the subject represented by  the  user
  277. and/or group identifiers contained in the client request may
  278. be checked against the access control list information asso-
  279. ciated  with  the referenced file on the server. Access con-
  280. trol list information is not required to be transmitted from
  281. the client to the server in support of a server based access
  282. control policy.  Client based support for access control  of
  283. server  based file objects is discussed below in the section
  284. which describes the extended attribute cache.
  285.  
  286. 3.3.  Mandatory Access Control
  287.  
  288. A Mandatory Access Control (MAC)  policy  provides  for  the
  289. restriction of subject access to objects based on the sensi-
  290. tivity of the information contained  in  the  objects.   MAC
  291. policies thus include assigning levels of trust or clearance
  292. to system users (subjects), and  levels  of  sensitivity  to
  293. system  objects, and then ensuring that only users with suf-
  294. ficient clearance can access the classified information.
  295.  
  296. 3.3.1.  Sensitivity Labels
  297.  
  298. When MAC policies  are  enabled,  each  system  subject  and
  299. object  is  created with a sensitivity label, and the system
  300. MAC policies compare the labels when determining access.
  301.  
  302. The AUTH_MLS credential contains the sensitivity  label  and
  303. clearance  information  associated with the TNFS client sub-
  304. ject (application) making the access request.  This informa-
  305. tion is sufficient to permit the MAC policy checking mechan-
  306. ism on the server to determine whether to permit  access  to
  307. the requested object or information.
  308.  
  309. 3.4.  Information Labels
  310.  
  311. Information labels represent the  actual  sensitivity  of  a
  312. given subject or object, and permit the additional identifi-
  313. cation of control markings for a given piece of information.
  314. The  information  label is dynamically adjusted on both sub-
  315. jects and objects to the highest sensitivity level reflected
  316. by  a  subject/object  pair:  if  a  subject  issues a write
  317. request to an object, the information label  of  the  object
  318. will  be adjusted (if necessary) to the level defined by the
  319. information label of the subject;  if  a  subject  issues  a
  320. read  request  to  an  object,  the information label of the
  321.  
  322.  
  323.  
  324. TNFS-001.2.05        Expires: 08/31/93              [Page 5]
  325.  
  326.  
  327.  
  328.  
  329.  
  330. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  331.  
  332.  
  333. subject will be adjusted to the level defined by the  infor-
  334. mation  label  of  the object.  Note that information labels
  335. are adjusted upwards as a result of these actions.
  336.  
  337. The AUTH_MLS credential in the RPC request message  contains
  338. the  current information label associated with a TNFS client
  339. application (subject), and permits a  remote  file's  object
  340. information  label to be adjusted (if necessary) as a result
  341. of a client generated write operation.  The TNFS reply  mes-
  342. sage  includes  a field for the information label associated
  343. with an  accessed  file  object,  permitting  the  subject's
  344. information  label to be adjusted (if necessary) as a result
  345. of a client generated read operation.
  346.  
  347. 3.5.  Privilege
  348.  
  349. The TCSEC/CMW concept of least privilege is an integral part
  350. of  the MLS environment. Fine grained privileges are granted
  351. to  subjects  (and  associated  processes),  and  executable
  352. objects (files) according to a strict set of rules. All sub-
  353. jects are limited with respect to the  system  actions  they
  354. may  perform.  An  executable  object  is  also limited to a
  355. specific set of actions, regardless  of  the  subject  which
  356. executes  the  object. Privilege sets associated with a file
  357. object are used to adjust a process's privileges during  the
  358. execution  of  that object.  Thus, at any given time, a sub-
  359. ject will possess only those privileges necessary to support
  360. the completion of its current task.
  361.  
  362. Note, however, that the privileges associated with a subject
  363. on  a client system might not be extended to that subject on
  364. a given remote server system.  Although most  subjects  will
  365. likely  retain  their  privileges  on  the  server, a client
  366. administrator, for example, might not be granted administra-
  367. tive privileges on the server.
  368.  
  369. For TNFS, subject privileges are defined within the AUTH_MLS
  370. credential, and file privileges are defined within the secu-
  371. rity file attributes.
  372.  
  373. 3.6.  File Name Attributes
  374.  
  375. UNIX file names may vary in length from 1 to 255 characters,
  376. and  represent  an  additional  data storage mechanism which
  377. must be protected by appropriate  MLS  policies.  Generally,
  378. the  contents  of  a file may be classified, but the name of
  379. the file or knowledge of its  existence  is  not.   In  some
  380. cases, however, the name of the file as well as its contents
  381. may require classification  and  protection.   For  example,
  382. consider the following file name:
  383.  
  384.           codeword.SAND_AIRDEF.is.the.TOP-
  385.           SECRET.DESERT_STORM.air.defense.project
  386.  
  387.  
  388.  
  389.  
  390. TNFS-001.2.05        Expires: 08/31/93              [Page 6]
  391.  
  392.  
  393.  
  394.  
  395.  
  396. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  397.  
  398.  
  399. The association of sensitivity and information  labels  with
  400. directory  file  name entries provides the support necessary
  401. to protect the use of classified file names.
  402.  
  403. 3.7.  Additional MLS Extensions for NFS
  404.  
  405. In an MLS environment, both DAC and MAC access control poli-
  406. cies  are  applied  in determining access to a given object.
  407. In a network environment of  MLS  systems  participating  in
  408. TNFS  file  access,  the  AUTH_MLS credential permits a TNFS
  409. server to apply both DAC and MAC policies  in  consideration
  410. of  a  request  from a remote NFS client subject.  Thus, MLS
  411. based network file access using the NFS V2 protocol  can  be
  412. supported  through  the  use  of  the AUTH_MLS credential as
  413. described.
  414.  
  415. Listing or modifying the DAC and MAC security attributes  of
  416. a  server's  file  or  file  name  from  a  client, however,
  417. requires additional protocol extensions.  Identifying  addi-
  418. tional  security  access restrictions when a request is made
  419. to open a remote file is also considered to  be  a  require-
  420. ment.  Extensions designed to satisfy these requirements are
  421. addressed by TNFS, and are described  in  the  next  subsec-
  422. tions.
  423.  
  424. 3.7.1.  Remote Access to Extended File Attributes
  425.  
  426. The DAC and MAC security attribute information includes  MAC
  427. and  information labels, and access control list information
  428. (ACLs).  Supporting remote access  to  this  information  is
  429. more difficult to address in the network environment, since:
  430.  
  431.      o    it requires transmitting additional file  security
  432.           attribute information (or its representation)
  433.  
  434.      o    additional file attribute  information  cannot  be
  435.           accommodated  in the existing NFS V2 protocol file
  436.           attribute data structures; additional support  for
  437.           setting  and  getting the extended security attri-
  438.           butes is required.
  439.  
  440. Thus, extensions to the NFS V2 protocol procedures have been
  441. defined  to  support  access  to  the extended attributes of
  442. served files and file names. The complete set of NFS  proto-
  443. col  procedures  and  security extensions are referred to in
  444. this document as the TNFS protocol.
  445.  
  446. 3.7.2.  File Open Enhancement
  447.  
  448. Using the NFS V2 protocol, a client request to  open  (2)  a
  449. remote  file  on  the server may be translated by the client
  450. into a GETATTR procedure call for the current  directory[6],
  451. _________________________
  452.  
  453.   [6] Depends on the presence of  valid  attributes  in
  454.  
  455.  
  456. TNFS-001.2.05        Expires: 08/31/93              [Page 7]
  457.  
  458.  
  459.  
  460.  
  461.  
  462. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  463.  
  464.  
  465. followed by a LOOKUP procedure  call  for  the  file  to  be
  466. opened.  If  valid  responses from these procedure calls are
  467. returned, the client's NFS file attribute cache is  updated,
  468. and  an open file descriptor may be returned to the request-
  469. ing application.
  470.  
  471. Since the NFS V2 protocol does not transmit an  actual  open
  472. request  to  the  server, however, an MLS server will not be
  473. able to apply the appropriate DAC and MAC policy at the time
  474. of  the  open  request, and the application may find that it
  475. has successfully opened the file, but that it cannot  access
  476. the  file  due  to  stronger  access  control policies being
  477. applied by the server in response to specific client  access
  478. requests.
  479.  
  480. An access protocol procedure  would  permit  the  client  to
  481. determine  whether  access to the file would be supported by
  482. the server, based on the application's open request type and
  483. the  associated extended security attribute information.  An
  484. ACCESS TNFS protocol procedure has been defined  to  address
  485. this  issue.   Thus,  if file attributes are being cached on
  486. the client, and the security attributes of a client  process
  487. issuing  a  request to open a remote file have been modified
  488. since the last time it issued an open request for that file,
  489. then an ACCESS procedure call shall be made to the server to
  490. revalidate the access rights of that client process.
  491.  
  492. 3.7.3.  File Name Enhancement
  493.  
  494. Supporting the retrieval of the security attributes  associ-
  495. ated with each file name requires an extension to the direc-
  496. tory result structure returned by  the  NFS  directory  pro-
  497. cedures:  LOOKUP,  CREATE,  and  MKDIR.  This data structure
  498. extension is defined in section 3.4.5.1.
  499.  
  500. The ability to modify file name security attributes indepen-
  501. dently  from file data security attributes is also required.
  502. A new TNFS procedure, SETNAMELABEL, has been defined to sup-
  503. port this capability.
  504.  
  505. 3.7.4.  MultiLevel Directory Enhancement
  506.  
  507. Directories are files which contain file names and  pointers
  508. to  the data associated with the file names.  The files con-
  509. tained in a directory include both regular files as well  as
  510. other  subdirectory  files.  Directories  are  used to group
  511. files, and to support the file system hierarchy.
  512.  
  513. In an MLS environment, files  and  directories  are  labeled
  514. with  specific  classifications; security policies limit the
  515. access of a given file to a user with a classification which
  516. _________________________
  517. the lookup cache (DNLC).
  518.  
  519.  
  520.  
  521.  
  522. TNFS-001.2.05        Expires: 08/31/93              [Page 8]
  523.  
  524.  
  525.  
  526.  
  527.  
  528. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  529.  
  530.  
  531. dominates the file's  classification.   MLS  implementations
  532. must  continue  to  maintain the basic file system directory
  533. hierarchy, and also support the MLS access  policies.   They
  534. must  support the creation, storage, and access of files and
  535. data of different security classifications, and also provide
  536. some  accommodation  for  the  use of commonly shared direc-
  537. tories, such as /tmp and /usr/tmp.
  538.  
  539. One implementation approach is to  use  file  name  security
  540. attributes,  as  described  previously.   The TNFS file name
  541. attributes and SETNAMELABEL procedure support this approach.
  542. An  alternative  is to create a set of diversion directories
  543. below  the  actual  MultiLevel  Directory.   Each  diversion
  544. directory  is  associated  with  a  specific  classification
  545. level, and user access  is  directed  into  the  appropriate
  546. diversion  directory  in a transparent, pass-through manner.
  547. The TNFS MLD procedure supports diversion  directory  imple-
  548. mentations.  Additional information is provided in [4].
  549.  
  550. 3.7.5.  TNFS Protocol Extensions
  551.  
  552. Extensions to the NFS V2 protocol are defined in  this  sec-
  553. tion of the specification.  These extensions are designed to
  554. support remote access to the security file attribute  exten-
  555. sions,  and  to  support  the file open, file name, and Mul-
  556. tiLevel Directory enhancements.
  557.  
  558. 3.7.5.1.  Data Structure Definitions
  559.  
  560. The  definitions  which  support  the  MLS  extensions   are
  561. described  in  this  section.  Since the definitions for the
  562. TNFS protocol are an extension of the original NFS V2 proto-
  563. col,  this  specification  will  include all of the extended
  564. data structure definitions, and a few of the original defin-
  565. itions  for clarity. Note that the arguments and results are
  566. defined using the RPC language.
  567.  
  568. The following RPC constants are used to  identify  the  TNFS
  569. extensions  which  support  MLS security policies.  The TNFS
  570. program will be registered as a separate  service  with  the
  571. RPC port mapping service.[7]  Registration  as  a  different
  572. service distinguishes the TNFS service from the original NFS
  573. V2 service.  The use of a different program  number  distin-
  574. guishes each request/response message.
  575.  
  576.  
  577.      PROGRAM 390086  /* TNFS Program Number */
  578.      VERSION      1  /* TNFS Version 1 */
  579.  
  580. _________________________
  581.   [7] TNFS server implementations may elect to share  a
  582. common  UDP  [13]  port number with the original NFS V2
  583. service, or to make use of a different port number.
  584.  
  585.  
  586.  
  587.  
  588. TNFS-001.2.05        Expires: 08/31/93              [Page 9]
  589.  
  590.  
  591.  
  592.  
  593.  
  594. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  595.  
  596.  
  597. The stat type is returned  from  every  procedure  call.   A
  598. value  of  NFS_OK indicates the call completed successfully.
  599. Other values indicate that an error occurred during the ser-
  600. vicing  of  the  request.  Note: this structure is unchanged
  601. from the NFS V2 Protocol Specification.  It  is  (partially)
  602. reproduced here for clarity.
  603.  
  604.  
  605.      stat
  606.  
  607.      enum stat {
  608.           NFS_OK = 0,
  609.           NFSERR_PERM = 1,
  610.              NFSERR_NOENT = 2,
  611.              . . .
  612.              [other NFS errors as defined in the V2 protocol
  613.      specification]
  614.      };
  615.  
  616.  
  617. The credential parameter is included  in  each  RPC  request
  618. message,  and is used to supply the client subject's creden-
  619. tials to the server.  The AUTH_MLS credential will  be  used
  620. with the TNFS procedure calls and is defined as follows:
  621.  
  622.  
  623.      #define AUTH_MLS 200000     /* decimal */
  624.  
  625.      #define MLS_TOKEN_SIZE 4    /* 4 octets or 32 bits */
  626.  
  627.      typedef opaque t_token[MLS_TOKEN_SIZE]; /*  tokens  are
  628.      opaque */
  629.  
  630.      struct authmls_cred {
  631.              u_long  auc_stamp;         /* arbitrary ID */
  632.              char    auc_machname<255>; /* machine name */
  633.              t_token auc_ids;           /* token for effective uid, gid, gids */
  634.              t_token auc_aid;           /* audit id token */
  635.              t_token auc_privs;         /* subject privileges token */
  636.              t_token auc_sens;          /* sensitivity token */
  637.              t_token auc_info;          /* information token */
  638.              t_token auc_integ;         /* integrity token */
  639.              t_token auc_vend;          /* vendor specific policy token */
  640.           t_token auc_clear;   /* subject clearance token */
  641.              t_token auc_audinfo;       /* audit information token */
  642.      };
  643.  
  644.  
  645.      Note that if a given security attribute  is  not  being
  646.      exchanged,  then  the  corresponding  credential  token
  647.      value shall be set to ''all bits on''.  A  given  secu-
  648.      rity policy may require that only a subset of the secu-
  649.      rity attributes provided for in this  specification  be
  650.      exchanged.   For  example, a C2 network security policy
  651.  
  652.  
  653.  
  654. TNFS-001.2.05        Expires: 08/31/93             [Page 10]
  655.  
  656.  
  657.  
  658.  
  659.  
  660. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  661.  
  662.  
  663.      may require the support of  privileges,  and  may  also
  664.      require  support  for  Access Control Lists (ACLs).  In
  665.      that case,  the  sensitivity,  information,  integrity,
  666.      vendor  specific,  and  clearance token values shall be
  667.      set to ''all bits on'' in the exchange messages.
  668.  
  669.  
  670. The fattr structure defines the complete set of file  attri-
  671. butes  of  a file. The extended fattr structure combines the
  672. NFS V2 fattr structure with additional fields for  a  file's
  673. security    attributes.    The   security   attributes   are
  674. represented by tokens.
  675.  
  676.  
  677.      struct fattr {
  678.              ftype   type;      /* file type */
  679.              u_long  mode;      /* encoded access mode */
  680.              u_long  nlink;     /* number of hard links */
  681.              u_long  uid;       /* file's owner id */
  682.              u_long  gid;       /* file's group id */
  683.              u_long  size;      /* file size in bytes */
  684.              u_long  blocksize; /* number bytes/block */
  685.              u_long  rdev;      /* device number of the file */
  686.              u_long  blocks;    /* current number of blocks */
  687.              u_long  fsid;      /* file system id */
  688.              u_long  fileid;    /* unique file identifier */
  689.              timeval atime;     /* time of file's last access */
  690.              timeval mtime;     /* time last modified (written) */
  691.              timeval ctime;     /* time of last attribute change */
  692.              t_token privs;     /* file privileges token */
  693.              t_token sens;      /* sensitivity token */
  694.              t_token info;      /* information token */
  695.              t_token integ;     /* integrity token */
  696.              t_token acl;       /* access control list token */
  697.              t_token vend;      /* vendor specific policy token */
  698.              t_token audinfo;   /* audit info token */
  699.      };
  700.  
  701.  
  702.      Note that if a given security attribute  is  not  being
  703.      exchanged,  then the corresponding file attribute token
  704.      value shall be set to ''all bits on''.  Note also  that
  705.      the  audit  information  token  in  the  file attribute
  706.      structure is included to permit the  server  to  return
  707.      optional  information,  such  as  the set of privileges
  708.      used by the server in processing the client's  request,
  709.      and/or  whether the request resulted in a change of the
  710.      state of the accessed object, such as the adjustment of
  711.      the information label.
  712.  
  713. The sattr structure defines the file attributes which can be
  714. set  from  the client. The extended sattr structure combines
  715. the NFS V2 sattr structure with additional  fields  for  the
  716. security  attributes,  which  are  represented by tokens.  A
  717.  
  718.  
  719.  
  720. TNFS-001.2.05        Expires: 08/31/93             [Page 11]
  721.  
  722.  
  723.  
  724.  
  725.  
  726. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  727.  
  728.  
  729. token value of is to be ignored.
  730.  
  731.  
  732.      struct sattr {
  733.              u_long  mode;    /* encoded access mode */
  734.              u_long  uid;     /* file's owner id */
  735.              u_long  gid;     /* file's group id */
  736.              u_long  size;    /* file size in bytes */
  737.              timeval atime;   /* last access time */
  738.              timeval mtime;   /* last data modify time */
  739.              t_token privs;   /* file privileges token */
  740.              t_token sens;    /* sensitivity token */
  741.              t_token info;    /* information token */
  742.              t_token integ;   /* integrity token */
  743.              t_token acl;     /* access control list token */
  744.              t_token vend;    /* vendor specific policy token */
  745.      };
  746.  
  747.  
  748. The sattrargs structure is used by  the  SETATTR  procedure.
  749. It contains the extended sattr structure definition.
  750.  
  751.  
  752.      struct sattrargs {
  753.          fhandle file;
  754.          sattr attributes;
  755.      };
  756.  
  757.  
  758. The attrstat structure defines  a  common  procedure  result
  759. containing the status of the procedure call.  It is returned
  760. with the results of GETATTR, SETATTR,  and  WRITE  procedure
  761. calls.   If  the  call was successful, attrstat contains the
  762. results for the specific procedure called, and the  complete
  763. set  of  file attributes for the file on which the procedure
  764. was executed.
  765.  
  766.  
  767.      union attrstat switch (stat status) {
  768.              case NFS_OK:
  769.                  fattr attributes;
  770.              default:
  771.                  void;
  772.      };
  773.  
  774.  
  775. The diropargs structure is used in directory operations. The
  776. fhandle dir is the directory containing file name name.
  777.  
  778.  
  779.      struct diropargs {
  780.           fhandle dir;
  781.           filename name;
  782.      };
  783.  
  784.  
  785.  
  786. TNFS-001.2.05        Expires: 08/31/93             [Page 12]
  787.  
  788.  
  789.  
  790.  
  791.  
  792. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  793.  
  794.  
  795. The diropres structure defines the results  of  a  directory
  796. procedure  call.   If the call was successful, diropres con-
  797. tains a new file handle file, the complete set of associated
  798. file  attributes,  and the file name attributes: sens, info,
  799. and vend.
  800.  
  801.  
  802.      union diropres switch (stat status) {
  803.              case NFS_OK:
  804.                  struct {
  805.                      fhandle file;
  806.                      fattr attributes;
  807.                      t_token sens;
  808.                      t_token info;
  809.                      t_token vend;
  810.                  } diropok;
  811.              default:
  812.                  void;
  813.      };
  814.  
  815.  
  816. The readlinkres structure defines the results of a  READLINK
  817. procedure  call.   If  the  call was successful, readlinkres
  818. contains the data in the symbolic link of the  file  identi-
  819. fied  by  the  file handle argument, and the complete set of
  820. associated file attributes.  File  attributes  are  returned
  821. with  the READLINK procedure call to support the information
  822. label adjustment policy.
  823.  
  824.  
  825.      union readlinkres switch (stat status) {
  826.              case NFS_OK:
  827.                  struct {
  828.                      path data;
  829.                      fattr attributes;
  830.                  } readlinkok;
  831.              default:
  832.                  void;
  833.      };
  834.  
  835.  
  836. The readdirres structure defines the results  of  a  READDIR
  837. procedure  call.   If  the  call  was successful, readdirres
  838. returns a variable number of directory entries, with a total
  839. size  of up to the amount specified in the argument count of
  840. the readdirargs structure. Each entry contains a unique file
  841. identifier, the name of the file, and an opaque entry in the
  842. directory, which is used in a subsequent  READDIR  procedure
  843. call to obtain additional entries starting at that ''point''
  844. in the directory.  The eof flag has a value of TRUE if there
  845. are  no  more  directory entries.  For TNFS, file attributes
  846. are returned with the READDIR procedure call to support  the
  847. information label adjustment policy.
  848.  
  849.  
  850.  
  851.  
  852. TNFS-001.2.05        Expires: 08/31/93             [Page 13]
  853.  
  854.  
  855.  
  856.  
  857.  
  858. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  859.  
  860.  
  861. Note that in responding to a  READDIR  procedure  call,  the
  862. server  shall  return only those directory entries which the
  863. requesting client process dominates. Thus,  security  attri-
  864. bute tokens are not required to be returned with each entry,
  865. and the directory  information  which  is  returned  may  be
  866. passed to the requesting process without additional process-
  867. ing by the client TCB.
  868.  
  869.  
  870.      union readdirres switch (stat status) {
  871.              case NFS_OK:
  872.                  struct {
  873.                      entry *entries;
  874.                      bool eof;
  875.                      fattr attributes;
  876.                  } readdirok;
  877.              default:
  878.                  void;
  879.      };
  880.  
  881. 3.7.5.2.  TNFS Protocol Procedure Definitions
  882.  
  883. The TNFS Protocol Definition integrates the use of:
  884.  
  885.      o    the extended fattr and sattr structures,
  886.  
  887.      o    an AUTH_MLS authentication style RPC credential,
  888.  
  889.      o    a new TNFS protocol program  number  to  differen-
  890.           tiate  between  NFS  V2  and the security extended
  891.           TNFS protocol,
  892.  
  893.      o    a new protocol procedure, ACCESS, to  support  the
  894.           file open enhancement,
  895.  
  896.      o    a new protocol procedure, SETNAMELABEL, to support
  897.           the  modification of the file name security attri-
  898.           butes, and
  899.  
  900.      o    a new protocol procedure, MLD, to  support  diver-
  901.           sion directories
  902.  
  903. Other than these changes, however, the syntax and  semantics
  904. of TNFS remain the same as in the original NFS V2 specifica-
  905. tion.
  906.  
  907. 3.7.5.2.1.  Access Procedure
  908.  
  909. The following descriptions are used to define the new ACCESS
  910. procedure.
  911.  
  912.  
  913. Definitions used to identify the access request type:
  914.  
  915.  
  916.  
  917.  
  918. TNFS-001.2.05        Expires: 08/31/93             [Page 14]
  919.  
  920.  
  921.  
  922.  
  923.  
  924. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  925.  
  926.  
  927.      #define READ    0x001
  928.      #define WRITE   0x002
  929.      #define EXEC    0x004
  930.      #define SEARCH  0x008
  931.      #define APPEND  0x010
  932.      #define STAT    0x020
  933.  
  934.  
  935. Arguments for the remote access procedure:
  936.  
  937.      accessargs
  938.  
  939.      struct accessargs {
  940.              fhandle  file;
  941.              u_long   flag;
  942.       };
  943.  
  944.  
  945. Response from the remote access procedure:
  946.  
  947.      accessres
  948.  
  949.      union accessres switch ( stat status ) {
  950.          case NFS_OK:
  951.              struct {
  952.                  bool_t status;   /* access status: TRUE  or
  953.      FALSE  */
  954.                  fattr  attributes;  /* standard file attri-
  955.      butes */
  956.              }  accessok;
  957.  
  958.          default:
  959.           void;
  960.  
  961.      };
  962.  
  963.  
  964. Procedure definition for checking remote access permission:
  965.  
  966.      accessres
  967.      NFSPROC_ACCESS(accessargs) = 18
  968.  
  969.      Description:
  970.  
  971.      Determine if access as described by flag will  be  per-
  972.      mitted  on the remote served object file by the reques-
  973.      ter.  Flag values are bit  encoded  as  defined  previ-
  974.      ously.  READ  access means that the data in file can be
  975.      read, WRITE access means that the data in file  can  be
  976.      modified  (written), EXEC access means that file can be
  977.      accessed and executed  (local  execution  of  a  remote
  978.      file),  SEARCH access means that the directory file can
  979.      be used as the argument to a LOOKUP  operation,  APPEND
  980.      means  that  the  file  size  can be extended, and STAT
  981.  
  982.  
  983.  
  984. TNFS-001.2.05        Expires: 08/31/93             [Page 15]
  985.  
  986.  
  987.  
  988.  
  989.  
  990. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  991.  
  992.  
  993.      access means that the requester has permission to  stat
  994.      the file.  If status is NFS_OK:
  995.  
  996.           accessok.status will be set to TRUE if the  access
  997.           request  would be allowed, and set to FALSE other-
  998.           wise, and
  999.  
  1000.           attributes will contain the complete set  of  file
  1001.           attributes.
  1002.  
  1003.      Otherwise:
  1004.  
  1005.           the NFSERR error number  returned  identifies  the
  1006.           error condition.
  1007.  
  1008.      Implementation:
  1009.  
  1010.      The ACCESS procedure provides a means for checking file
  1011.      access  permission prior to issuing a subsequent set of
  1012.      file operations. For example, a TNFS client  may  issue
  1013.      an  access  procedure  as  a result of an application's
  1014.      file open (2) request to determine if  subsequent  file
  1015.      reads  and/or writes by the application would be denied
  1016.      by the server as a result of the server's extended file
  1017.      access  security policies.  Note that the processing of
  1018.      an open (2) request for a remote file shall include  an
  1019.      ACCESS procedure call if the security attributes of the
  1020.      issuing client process have  been  modified  since  the
  1021.      last  time that process issued an open request for that
  1022.      file.  Note also that the information returned  by  the
  1023.      server  in  response to an ACCESS procedure call is not
  1024.      static; subsequent file administrative  procedures  may
  1025.      result  in  the  modification  of  the  file's security
  1026.      attributes.
  1027.  
  1028. 3.7.5.2.2.  Set Name Label Procedure
  1029.  
  1030. The following descriptions are used to define the  new  SET-
  1031. NAMELABEL procedure.
  1032.  
  1033.  
  1034. Arguments for the set name label procedure:
  1035.  
  1036.      setnmlabargs
  1037.  
  1038.      struct setnmlabargs {
  1039.              struct diropargs dirargs;
  1040.              t_token  sens;
  1041.              t_token  info;
  1042.              t_token  vend;
  1043.       };
  1044.  
  1045.  
  1046. Response from the set name label procedure:
  1047.  
  1048.  
  1049.  
  1050. TNFS-001.2.05        Expires: 08/31/93             [Page 16]
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  1057.  
  1058.  
  1059.      diropres
  1060.  
  1061.      union diropres switch ( stat status ) {
  1062.          case NFS_OK:
  1063.              struct {
  1064.                 fhandle file;
  1065.                 fattr attributes;
  1066.                 t_token sens;
  1067.                 t_token info;
  1068.                 t_token vend;
  1069.          } diropok;
  1070.  
  1071.          default:
  1072.           void;
  1073.  
  1074.      };
  1075.  
  1076.  
  1077. Procedure definition for setting file name  security  attri-
  1078. butes:
  1079.  
  1080.      diropres
  1081.      NFSPROC_SETNAMELABEL(setnmlabargs) = 19
  1082.  
  1083.      Description:
  1084.  
  1085.      Set the file name security attributes: the  sensitivity
  1086.      label  sens, the information label info, and the vendor
  1087.      specific policy label vend on the file name name in the
  1088.      parent directory dir.  If status is NFS_OK:
  1089.  
  1090.           then the reply file and reply attributes  are  the
  1091.           file  handle  and  attributes for the file name in
  1092.           the directory given by dir in  the  argument,  and
  1093.           the reply sens, reply info, and reply vend are the
  1094.           sensitivity, information, and vendor specific pol-
  1095.           icy labels for the file name name.
  1096.  
  1097.      Otherwise:
  1098.  
  1099.           the NFSERR error number  returned  identifies  the
  1100.           error condition
  1101.  
  1102.      Implementation:
  1103.  
  1104.      The SETNAMELABEL procedure provides a means for modify-
  1105.      ing the file name security attributes: the sensitivity,
  1106.      information, and vendor specific policy labels  associ-
  1107.      ated  with  the  file  name  object.   When  a  file is
  1108.      created, the file name sensitivity label  will  be  set
  1109.      equal  to  the  sensitivity  value  identified  in  the
  1110.      credential structure, and  the  file  name  information
  1111.      label  will  be set to the information value identified
  1112.      in the credential structure.  Once the file is created,
  1113.  
  1114.  
  1115.  
  1116. TNFS-001.2.05        Expires: 08/31/93             [Page 17]
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  1123.  
  1124.  
  1125.      however,  the sensitivity and information labels of the
  1126.      file name and the file  data  are  maintained  indepen-
  1127.      dently.   The  file data security attribute information
  1128.      is maintained by SETATTR, and the  file  name  security
  1129.      attribute information is maintained by SETNAMELABEL.
  1130.  
  1131. 3.7.5.2.3.  MultiLevel Diversion Directory Procedure
  1132.  
  1133. The following descriptions are used to define the  new  pro-
  1134. cedure to support diversion directories.
  1135.  
  1136.  
  1137. Definitions used to identify the MLD request operations:
  1138.  
  1139.      #define CREATE    1
  1140.      #define REMOVE    2
  1141.      #define ISMLD     3
  1142.  
  1143.  
  1144. Arguments for the MLD procedure:
  1145.  
  1146.      mldargs
  1147.  
  1148.      struct mldargs {
  1149.              fhandle  file;
  1150.              u_long   op;
  1151.       };
  1152.  
  1153.  
  1154. Response from the remote access procedure:
  1155.  
  1156.      mldres
  1157.  
  1158.      union mldres switch ( stat status ) {
  1159.          case NFS_OK:
  1160.              struct {
  1161.                  bool_t ismld;   /* status:  TRUE  or  FALSE
  1162.      */
  1163.                  fattr  attributes;  /* standard file attri-
  1164.      butes */
  1165.              }  mldok;
  1166.  
  1167.          default:
  1168.           void;
  1169.  
  1170.      };
  1171.  
  1172.  
  1173. Procedure definition for maintaining diversion directories:
  1174.  
  1175.      mldres
  1176.      NFSPROC_MLD(mldargs) = 20
  1177.  
  1178.      Description:
  1179.  
  1180.  
  1181.  
  1182. TNFS-001.2.05        Expires: 08/31/93             [Page 18]
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  1189.  
  1190.  
  1191.      Support the creation and removal  of  diversion  direc-
  1192.      tories,  and the ability to determine if a given direc-
  1193.      tory is a diversion directory.   The  CREATE  operation
  1194.      requests  that  a  diversion  directory be created, the
  1195.      REMOVE operation requests that a diversion directory be
  1196.      destroyed,  and  the  ISMLD operation requests that the
  1197.      diversion status of the file be returned.  If status is
  1198.      NFS_OK:
  1199.  
  1200.           if the mldargs.op was ISMLD, then mldok.ismld will
  1201.           be  set  to TRUE if the file is a diversion direc-
  1202.           tory, and set to FALSE otherwise
  1203.  
  1204.           if the mldargs.op was not ISMLD, then  mldok.ismld
  1205.           has no meaning
  1206.  
  1207.           attributes will contain the complete set  of  file
  1208.           attributes
  1209.  
  1210.      Otherwise:
  1211.  
  1212.           the NFSERR error number  returned  identifies  the
  1213.           error condition
  1214.  
  1215.      Implementation:
  1216.  
  1217.      The MLD procedure  provides  the  means  for  creating,
  1218.      removing, and checking for the existence of a diversion
  1219.      directory.
  1220.  
  1221.      MultiLevel Directory implementations which make use  of
  1222.      file  name  attributes shall return status of NFS_OK in
  1223.      response to CREATE, REMOVE, and ISMLD  requests,  since
  1224.      all  directories  are MultiLevel Directories in such an
  1225.      environment and thus no explicit action is required.
  1226.  
  1227. 3.7.5.2.4.  TNFS Service Routines
  1228.  
  1229. The TNFS protocol definition is defined below as  a  set  of
  1230. procedures,  arguments,  and  results.   All  modified  data
  1231. structure definitions are included  in  this  specification.
  1232. Most  NFS V2 protocol data definitions remain unchanged, and
  1233. are documented in the NFS V2  protocol  specification.   The
  1234. complete  set of TNFS protocol procedures are defined below.
  1235. The ACCESS, SETNAMELABEL, and MLD procedures  are  new,  but
  1236. the  other  procedures  are the same as those defined in the
  1237. NFS  V2  specification.   The  GETATTR,   SETATTR,   LOOKUP,
  1238. READLINK,  READ, WRITE, CREATE, MKDIR, READDIR, ACCESS, SET-
  1239. NAMELABEL, and MLD procedures for the  TNFS  protocol,  how-
  1240. ever, include the extended file attribute structure fattr in
  1241. the response message.
  1242.  
  1243.      program TNFS_PROGRAM {
  1244.          version TNFS_VERSION {
  1245.  
  1246.  
  1247.  
  1248. TNFS-001.2.05        Expires: 08/31/93             [Page 19]
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  1255.  
  1256.  
  1257.              void        NFSPROC_NULL (void) = 0;
  1258.              attrstat    NFSPROC_GETATTR (fhandle) = 1;
  1259.              attrstat    NFSPROC_SETATTR (sattrargs) = 2;
  1260.              diropres    NFSPROC_LOOKUP (diropargs) = 4;
  1261.              readlinkres NFSPROC_READLINK (fhandle) = 5;
  1262.              readres     NFSPROC_READ (readargs) = 6;
  1263.              attrstat    NFSPROC_WRITE (writeargs) = 8;
  1264.              diropres    NFSPROC_CREATE (createargs) = 9;
  1265.              stat        NFSPROC_REMOVE (diropargs) = 10;
  1266.              stat        NFSPROC_RENAME (renameargs) = 11;
  1267.              stat        NFSPROC_LINK (linkargs) = 12;
  1268.              stat        NFSPROC_SYMLINK (symlinkargs) = 13;
  1269.              diropres    NFSPROC_MKDIR (createargs) = 14;
  1270.              stat        NFSPROC_RMDIR (diropargs) = 15;
  1271.              readdirres  NFSPROC_READDIR (readdirargs) = 16;
  1272.              statfsres   NFSPROC_STATFS (fhandle) = 17;
  1273.              accessres   NFSPROC_ACCESS (accessargs) = 18;
  1274.              diropres    NFSPROC_SETNAMELABEL (setlabargs) =
  1275.      19;
  1276.              mldres      NFSPROC_MLD (mldargs) = 20;
  1277.          } = 1;     /* Trusted NFS Version 1  */
  1278.      } = 390086;    /* Trusted NFS Program Number */
  1279.  
  1280. 3.7.6.  Using TNFS
  1281.  
  1282. With the TNFS protocol procedures described  above,  listing
  1283. and  modifying  remote  extended file attributes is now sup-
  1284. ported. The definition  of  a  new  application  programming
  1285. interface  (API) to support the display of a file's security
  1286. attributes will permit either a new file list command (e.g.,
  1287. lsacl,  lsmac) or a modification to the existing ls (2) com-
  1288. mand to display the security attribute  information  associ-
  1289. ated  with a remote file.  Likewise, the definition of a new
  1290. API for setting a file's security attributes will permit new
  1291. change  security  attribute  commands to be developed (e.g.,
  1292. chacl, chmac).
  1293.  
  1294. The file open enhancement discussed previously  may  now  be
  1295. supported.   The  open API will be translated into a GETATTR
  1296. operation for the current directory, a LOOKUP operation  for
  1297. the file to be opened, and an ACCESS operation which returns
  1298. a boolean value  indicating  whether  the  access  requested
  1299. would  be  permitted,  along  with  the  complete set of the
  1300. file's attributes.  Thus,  the  TNFS  client  can  determine
  1301. whether  the  application requesting to open the remote file
  1302. will be able to access it based on the open request type and
  1303. the  application's  security credentials.  As described ear-
  1304. lier, a server may choose to associate a set  of  privileges
  1305. with  the  remote  subject  which  are  different  from  the
  1306. privilege set associated with the subject on the client sys-
  1307. tem.  The ACCESS procedure call returns the server's assess-
  1308. ment of the subject's access capabilities.
  1309.  
  1310. The information label adjustment policy is supported,  since
  1311.  
  1312.  
  1313.  
  1314. TNFS-001.2.05        Expires: 08/31/93             [Page 20]
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  1321.  
  1322.  
  1323. the  AUTH_MLS  credential contains the subject's information
  1324. label, and the TNFS reply message contains an extended  file
  1325. attribute  structure which includes the file object's infor-
  1326. mation label.  Note that the subject's information label may
  1327. require  adjustment  as  a  result  of reading a remote file
  1328. (READ), reading a remote directory (READDIR), or  reading  a
  1329. remote  symbolic  link (READLINK).  A remote file's (object)
  1330. information label may be adjusted as a  result  of  SETATTR,
  1331. WRITE,  CREATE,  RENAME,  LINK, SYMLINK, and MKDIR TNFS pro-
  1332. cedure calls.
  1333.  
  1334. File names may now be  protected  by  MLS  policy  with  the
  1335. introduction  of file name security attributes, and the SET-
  1336. NAMELABEL procedure.
  1337.  
  1338. Finally, MultiLevel Directories are accommodated.
  1339.  
  1340. 3.7.7.  TNFS Access Control Policy
  1341.  
  1342. The access control policy recommended by this  proposal  may
  1343. be stated as follows:
  1344.  
  1345.      o    a client system shall always apply the access con-
  1346.           trol  policy  to  a  local request for access to a
  1347.           local resource,
  1348.  
  1349.      o    a server system shall always apply the access con-
  1350.           trol  policy  to  a  local request for access to a
  1351.           local resource,
  1352.  
  1353.      o    a server system shall always apply the access con-
  1354.           trol policy to a remote access request for a local
  1355.           resource, and
  1356.  
  1357.      o    a client system may (temporarily) apply the access
  1358.           control   policy   to   a  locally  cached  remote
  1359.           resource, iff:
  1360.  
  1361.           *    client security attribute caching support  is
  1362.                included in the implementation, and
  1363.  
  1364.           *    a client security attribute caching policy is
  1365.                enabled by the host security officer
  1366.  
  1367. This TNFS access control policy ensures that no access  will
  1368. be  made  without the application of appropriate access con-
  1369. trol.
  1370.  
  1371. 3.7.8.  TNFS Auditing Policy
  1372.  
  1373. The auditing policy recommended by this proposal  is  stated
  1374. as follows. When the security auditing function is enabled:
  1375.  
  1376.      o    an implementation shall:
  1377.  
  1378.  
  1379.  
  1380. TNFS-001.2.05        Expires: 08/31/93             [Page 21]
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  1387.  
  1388.  
  1389.           (1)  audit  all  local  requests  for  local  file
  1390.                access:
  1391.  
  1392.                >    a client system  shall  always  audit  a
  1393.                     local  request  for  access  to  a local
  1394.                     resource,
  1395.  
  1396.                >    a server system  shall  always  audit  a
  1397.                     local  request  for  access  to  a local
  1398.                     resource
  1399.  
  1400.           (2)  provide the capability to  audit  all  remote
  1401.                file access requests:
  1402.  
  1403.                >    the client shall support the  capability
  1404.                     to  audit  local  requests for access to
  1405.                     remote resources on a server, and
  1406.  
  1407.                >    the server shall support the  capability
  1408.                     to  audit  remote requests for access to
  1409.                     local resources on the server[8]
  1410.  
  1411.           (3)  enable  client  system  auditing   of   local
  1412.                requests   for  access  to  remote  files  by
  1413.                default
  1414.  
  1415. Thus, when the security auditing function is enabled:
  1416.  
  1417.      o    all local requests for access to local  files  are
  1418.           audited,
  1419.  
  1420.      o    client system requests for access to remote  files
  1421.           are audited[9]
  1422.  
  1423.      o    the capability to audit remote file access by both
  1424.           client and server is provided:
  1425.  
  1426.           *    client system  auditing  may  be  enabled  to
  1427.                audit  local  requests  for  access to remote
  1428.                resources; client system auditing is  enabled
  1429.                by default,
  1430.  
  1431.           *    server system  auditing  may  be  enabled  to
  1432.                audit  remote  requests  for  access to local
  1433. _________________________
  1434.  
  1435.   [8] This option  may  require  the  auditing  of  the
  1436. specific  TNFS protocol procedure calls, since the pro-
  1437. tocol procedures are not translated into actual  ''sys-
  1438. tem calls'' in many server implementations.
  1439.   [9] This  is the default policy; site specific audit-
  1440. ing policies are established by the site security  off-
  1441. icer.
  1442.  
  1443.  
  1444.  
  1445.  
  1446. TNFS-001.2.05        Expires: 08/31/93             [Page 22]
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  1453.  
  1454.  
  1455.                resources
  1456.  
  1457.      o    enabling of the remote file access auditing  capa-
  1458.           bility  shall  be supported by a system management
  1459.           operation
  1460.  
  1461. This TNFS policy ensures that each  TNFS  host  shall  audit
  1462. local  requests for local file access, each TNFS client sys-
  1463. tem  shall  audit  requests  for  remote  file  access   (by
  1464. default),  and  both TNFS clients and servers shall have the
  1465. cability to enable auditing of remote file access  activity.
  1466. In  a  given  network  environment,  it  may be desirable to
  1467. optionally disable auditing of remote access on  either  the
  1468. client or the server to avoid duplication.
  1469.  
  1470. 3.7.9.  The Extended Attribute Cache
  1471.  
  1472. NFS caching strategies are implementation specific, and  are
  1473. not  part  of  the NFS protocol.  Caching is not required to
  1474. support  TNFS  interoperability.   This  specification  will
  1475. therefore  not  include  specific  details  on  the issue of
  1476. attribute caching.  However, since  the  caching  mechanisms
  1477. are  included in the NFS reference source code releases, and
  1478. since attribute caching is critical for achieving  NFS  per-
  1479. formance  goals,  several  suggestions  are included in this
  1480. section.
  1481.  
  1482. In most NFS client implementations, remote  file  attributes
  1483. are cached on the client, improving performance and reducing
  1484. network traffic.  The attribute cache is updated frequently,
  1485. as  most  NFS  procedures  return file attributes along with
  1486. other requested information.
  1487.  
  1488. A client side cache for the extended  security  file  attri-
  1489. butes  should also be considered for similar reasons.  Since
  1490. all of the file's security attributes are returned with each
  1491. TNFS  file  access  request,  an extended security attribute
  1492. cache can now be maintained on the client.
  1493.  
  1494. Extending the  attribute  validation  procedure  to  include
  1495. validating the security file attributes permits the complete
  1496. set of file attributes to be checked and refreshed  if  they
  1497. are  no  longer  valid.  If the file's cached attributes are
  1498. not valid, a GETATTR procedure call can be made.   The  TNFS
  1499. reply  to  this  procedure  now includes the complete set of
  1500. file attribute information, permitting  all  of  the  file's
  1501. cached attributes to be refreshed.  Cached attribute entries
  1502. shall be aged and eventually flushed  unless  refreshed.  If
  1503. client caching is enabled, then per process cached attribute
  1504. entries shall be maintained.
  1505.  
  1506. Note again that an attribute caching policy is not  part  of
  1507. the  protocol,  and  is  an implementation technique used to
  1508. improve performance.  During the window  of  time  that  the
  1509.  
  1510.  
  1511.  
  1512. TNFS-001.2.05        Expires: 08/31/93             [Page 23]
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  1519.  
  1520.  
  1521. cache  entry  is  valid,  the  client system applies the MLS
  1522. access control policies on  behalf  of  the  server.  It  is
  1523. recommended  that  if  an implementation supports the use of
  1524. client side attribute  caching,  it  shall  also  support  a
  1525. mechanism for disabling the attribute cache. Specific imple-
  1526. mentation details are provided in [4].
  1527.  
  1528. 4.  Related Requirements and Expectations
  1529.  
  1530. This specification addresses extensions the NFS V2  protocol
  1531. which accommodate network file access in a trusted, MLS net-
  1532. work environment.   Expectations  for  the  environment  for
  1533. which this specification is applicable include:
  1534.  
  1535.      o    the TNFS network environment is a trusted environ-
  1536.           ment:
  1537.  
  1538.           >    TNFS  authentication  and  message  integrity
  1539.                support shall not be required
  1540.  
  1541.           >    use  of  TNFS  in  an  untrusted  environment
  1542.                (e.g., commercial network environment) is not
  1543.                addressed by this specification
  1544.  
  1545.      o    other, related RPC services are required  to  sup-
  1546.           port  the  execution  of NFS; these services shall
  1547.           support the AUTH_MLS credential  flavor,  but  may
  1548.           also  support  alternative policies which make use
  1549.           of other authentication flavors:
  1550.  
  1551.           >    the token management service is  required  to
  1552.                translate    security    attributes   between
  1553.                expanded and tokenized formats [5],
  1554.  
  1555.           >    the mount service is required to support  NFS
  1556.                mount requests,
  1557.  
  1558.           >    the lock manager and status monitor  services
  1559.                are  required  to  support  NFS file and file
  1560.                region locking
  1561.  
  1562.      o    client side mounts  shall  be  restricted  to  the
  1563.           server's exported mount points:
  1564.  
  1565.           >    client requests to mount a subdirectory which
  1566.                resides   below   the  export  point  in  the
  1567.                server's exported directory shall be denied,
  1568.  
  1569.           >    without this restriction,  client  access  to
  1570.                server   files  mounted  below  the  server's
  1571.                export point bypass the authorization  checks
  1572.                which  would  otherwise  have been made using
  1573.                the  access  modes  of  the  file  components
  1574.                located   higher  in  the  server's  exported
  1575.  
  1576.  
  1577.  
  1578. TNFS-001.2.05        Expires: 08/31/93             [Page 24]
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  1585.  
  1586.  
  1587.                tree[10]
  1588.  
  1589.      o    most file access will take place between MLS modi-
  1590.           fied  clients  and  servers, but some TNFS systems
  1591.           will continue to interoperate with NFS V2  systems
  1592.           through  the  use  of  an  appropriate policy; for
  1593.           example, a  filter  or  gateway  could  be  placed
  1594.           between  a  MLS system and an unmodified system to
  1595.           insert or delete  appropriate  security  attribute
  1596.           information on behalf of the unmodified system
  1597.  
  1598.           note that client system auditing information  will
  1599.           not  be  supplied for remote file access initiated
  1600.           from an unmodified  NFS  client;  enabling  server
  1601.           system  auditing should be considered by the secu-
  1602.           rity officer to support these configurations
  1603.  
  1604.      o    a  TNFS  client  should  not  send  any   security
  1605.           extended  NFS  procedure  calls  to a server which
  1606.           does not  support  this  service;  a  TNFS  client
  1607.           should  also refrain from sending extraneous secu-
  1608.           rity attribute information to a TNFS  server  that
  1609.           does not support those attributes
  1610.  
  1611.      o    additional TCB information[11]  is  maintained  by
  1612.           each  MLS system to support trusted interoperabil-
  1613.           ity [10]; for example, each MLS host may:
  1614.  
  1615.           >    maintain a list of the hosts  which  it  will
  1616.                communicate with,
  1617.  
  1618.           >    maintain the set of security attributes which
  1619.                it  expects  to  use  in the exchange of data
  1620.                with a given host, and
  1621.  
  1622.           >    maintain the specific translation  scheme  or
  1623.                schemes  which  will  be  used in translating
  1624.                tokens with a given host [5]
  1625.  
  1626.      o    the  security  information  defined   within   the
  1627.           AUTH_MLS  credential and file attribute structures
  1628.           provides for the transfer of  security  attributes
  1629.           required  to  support  MLS access policies without
  1630.           requiring the underlying network layer to  provide
  1631. _________________________
  1632.  
  1633.   [10] Note that appropriate use of symbolic  links  on
  1634. the  client  will  result  in  a client file name space
  1635. similar to one previously constructed by mounting  sub-
  1636. directories of exported server file trees.
  1637.   [11] Note that this  information  is  needed  by  all
  1638. trusted network applications, and is not limited to NFS
  1639. file access.
  1640.  
  1641.  
  1642.  
  1643.  
  1644. TNFS-001.2.05        Expires: 08/31/93             [Page 25]
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  1651.  
  1652.  
  1653.           security attribute information:
  1654.  
  1655.           >    if security attributes are provided  by  both
  1656.                the  RPC  layer  and  the  underlying network
  1657.                layer, then the security  attribute  informa-
  1658.                tion  provided  by  the  RPC  layer  shall be
  1659.                applied to the file data  transferred  within
  1660.                the RPC message
  1661.  
  1662.           >    transferring security attributes  within  the
  1663.                RPC  layer provides for the support of a pol-
  1664.                icy where data  may  be  transferred  with  a
  1665.                security  classification  which  is different
  1666.                from the security classification of the  net-
  1667.                work  layer;  for  instance, file data with a
  1668.                given security classification might first  be
  1669.                encrypted and then transferred through a net-
  1670.                work with a lower security classification.
  1671.  
  1672.           >    support for the transfer of  MAC  sensitivity
  1673.                labels  for  the  Internet Protocol Suite has
  1674.                been addressed by the CIPSO  [11],  and  IPSO
  1675.                [12] documents
  1676.  
  1677. 5.  Conclusion
  1678.  
  1679. This document describes the set of extensions which  support
  1680. network  file  access in a network environment consisting of
  1681. MLS systems using the  proposed  TNFS  protocol  extensions.
  1682. Unmodified  NFS  clients and servers are supported using the
  1683. de facto standard NFS V2 protocol.
  1684.  
  1685. With the previously defined extensions, the MLS network file
  1686. access requirements are met.  The extended structure defini-
  1687. tions support the DAC and MAC attributes required for  modi-
  1688. fying  or displaying the security attribute information. The
  1689. enhanced file  open  operation  and  the  information  label
  1690. adjustment policies are also supported.
  1691.  
  1692. Thus, a small set of extensions to the  NFS  V2  environment
  1693. permits MLS access control policies to be supported.  Agree-
  1694. ment on these changes will permit the current  base  of  NFS
  1695. clients  and  servers  to  be  accommodated  in  the  secure
  1696. environment with no changes, and for TNFS  modified  systems
  1697. to interoperate using MLS policies.
  1698.  
  1699. 6.  Acknowledgements
  1700.  
  1701. I would like to acknowledge the members of the ITEF/TSIG NFS
  1702. Subcommittee,  who  were  instrumental  in  evolving the MLS
  1703. extended NFS Protocol Specification from the original propo-
  1704. sal.  Many  comments were also made during the review of the
  1705. later drafts which greatly improved the specification's rea-
  1706. dability.   Contributing  IETF  TNFS  working  group members
  1707.  
  1708.  
  1709.  
  1710. TNFS-001.2.05        Expires: 08/31/93             [Page 26]
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  1717.  
  1718.  
  1719. include Jeff Edelheit, Fran  Fadden,  Jonathon  Fraser,  Ali
  1720. Gohshan,  Carl  Smith, Mark Saake, Dave Summers, and Charlie
  1721. Watt.  I'd also like to acknowledge the contributions of the
  1722. original  members  of the TSIG Trusted NFS working group; in
  1723. addition to the above, these members included Morgan  Clark,
  1724. Tricia Jordan, Will Lees, Scott Norton, and Mike Shipley.
  1725.  
  1726. The specification was also reviewed by numerous persons out-
  1727. side  of the subcommittee. I would like to acknowledge these
  1728. persons as well, as a number  of  their  comments  are  also
  1729. reflected in the final version.
  1730.  
  1731. 7.  Author's Address
  1732.  
  1733. Fred Glover
  1734. Digital Equipment Corporation
  1735. 110 Spit Brook Road ZK03-3/U14
  1736. Nashua, New Hampshire 03062-2698
  1737.  
  1738. Phone: 603-881-0388
  1739.  
  1740. EMail: fglover@zk3.dec.com
  1741.  
  1742. 8.  References
  1743.  
  1744. [1] Sun Microsystems, Inc., "Network  Filesystem  Specifica-
  1745.      tion",  RFC-1094,  DDN  Network Information Center, SRI
  1746.      International, Menlo Park, CA.
  1747.  
  1748. [2] National Computer Security Center, United States Depart-
  1749.      ment  of  Defense, "Trusted Computer Systems Evaluation
  1750.      Criteria" National Computer Security Center, Ft. George
  1751.      G. Meade, MD., 1985, DoD 5200.28-STD
  1752.  
  1753. [3] Defense Intelligence Agency, United States Department of
  1754.      Defense,  "Compartmented  Mode  Workstation  Evaluation
  1755.      Criteria",  Defense  Intelligence  Agency,  Washington,
  1756.      D.C., DIA document number DDS-2600-6243-91
  1757.  
  1758. [4] Trusted Systems Interoperability  Group,  "The  MLS  NFS
  1759.      Implementor's Guide", TSIG Document
  1760.  
  1761. [5] Trusted Systems Interoperability Group, "The  MLS  Token
  1762.      Translation Specification", TSIG Document
  1763.  
  1764. [6] Sun Microsystems, Inc., "Remote Procedure Call  Specifi-
  1765.      cation",  RFC-1057, DDN Network Information Center, SRI
  1766.      International, Menlo Park, CA.
  1767.  
  1768. [7] Sun Microsystems, Inc.,  "External  Data  Representation
  1769.      Specification",   RFC-1014,   DDN  Network  Information
  1770.      Center, SRI International, Menlo Park, CA.
  1771.  
  1772. [8] Clark, D. D. and  David  R.  Wilson,  "A  Comparison  of
  1773.  
  1774.  
  1775.  
  1776. TNFS-001.2.05        Expires: 08/31/93             [Page 27]
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782. INTERNET-DRAFT  TNFS Protocol Specification         02/28/93
  1783.  
  1784.  
  1785.      Commercial  and  Military  Computer Security Policies",
  1786.      Proceedings of the 1987 IEEE Symposium on Security  and
  1787.      Privacy, IEEE Computer Society Press, Washington, DC.
  1788.  
  1789. [9] Biba, K. J., "Integrity Considerations for  Secure  Com-
  1790.      puter Systems", TR-76-372, Electronic Systems Division,
  1791.      Air Force Systems Command, U.S. Department of  the  Air
  1792.      Force, Hanscomb AFB, MA., April 1977
  1793.  
  1794. [10]  Trusted  Systems  Interoperability   Group,   "Trusted
  1795.      Administration Specification", TSIG Document
  1796.  
  1797. [11] Trusted Systems Interoperability Group, "Commercial  IP
  1798.      Security Option", TSIG Document
  1799.  
  1800. [12] "The IP Security Option", RFC-1108, DDN Network  Infor-
  1801.      mation Center, SRI International, Menlo Park, CA.
  1802.  
  1803. [13] Postel, J.,  "User  Datagram  Protocol",  RFC-768,  DDN
  1804.      Network  Information  Center,  SRI International, Menlo
  1805.      Park, CA.
  1806.  
  1807.  
  1808.  
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822.  
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842. TNFS-001.2.05        Expires: 08/31/93             [Page 28]
  1843.  
  1844.  
  1845.